/* 引入路由 */
// import router from './router'
/**
 * 菜单工具类，来自(感谢)：
 * https://github.com/sunlandong/dynamicRouter/blob/master/src/utils/MenuUtils.js
 * Created by fanGe on 2019-02-21 09:44:57.
 * 自动生成
 */

export default function buildMenus (menus, routeMapping) {
  if (menus) {
    // console.log(routeMapping)
    let returnMenus = []
    menus.forEach(function (element) {
      let menu = {
        id: element.menuId,
        keyId: element.menuId,
        title: element.menuName,
        component: element.component,
        path: element.path,
        params: null,
        query: {},
        parentId: element.parentKid,
        leaf: true,
        hidden: false,
        icon: element.icon,
        children: [],
        // add by wuyp 20190506：增加store菜单属性-start
        menuCode: element.menuCode,
        operationList: []
        // add by wuyp 20190506：增加store菜单属性-end
      }
      if (!element.component) {
        element.component = routeMapping[element.path]
      }
      if (element.params) {
        menu.params = JSON.parse(element.params)
      }
      if (element.query) {
        menu.query = JSON.parse(element.query)
      }
      if (element.hidden !== null && element.hidden !== undefined) {
        menu.hidden = element.hidden
      }
      if (element.leaf !== null && element.leaf !== undefined) {
        menu.leaf = element.leaf
      }
      // add by wuyp 20190506：增加store菜单属性-start
      if (element.menuCode !== null && element.menuCode !== undefined) {
        menu.menuCode = element.menuCode
      }
      if (element.opAuthorityDTOList !== null && element.opAuthorityDTOList !== undefined) {
        menu.operationList = element.opAuthorityDTOList
      }
      // add by wuyp 20190506：增加store菜单属性-end
      if (element.parentKid === '0') {
        returnMenus.push(menu)
      } else {
        // 子菜单
        // 查询对应的父级菜单，并添加到父级菜单下
        returnMenus.forEach(m => {
          if (m.keyId === element.parentKid) {
            m.leaf = false
            m.children.push(menu)
          }
        })
      }
      // let childrens = null
      // if (element.children && element.children.length > 0) {
      //   childrens = buildMenus(element.children)
      // }
      // let query = null
      // if (element.query) {
      //   query = JSON.parse(element.query)
      // }
      // let params = null
      // if (params) {
      //   params = JSON.parse(element.params)
      // }
      // returnMenus.push({
      //   id: element.id,
      //   title: element.title,
      //   component: element.component,
      //   path: element.path,
      //   params: params,
      //   query: query,
      //   parentId: element.parentId,
      //   leaf: element.leaf,
      //   hidden: element.hidden,
      //   icon: element.icon,
      //   children: childrens
      // })
    }, this)
    return returnMenus
  }
  return []
}
// function buildRouterMapping (mapping, r) {
//   mapping[r.path] = r.name
//   if (r.children !== null && r.children.length > 0) {
//     r.children.forEach(it => {
//       buildRouterMapping(mapping, it)
//     })
//   }
// }

// import lazyLoading from './lazyLoading'

// import Layout from '@/pages/layout/Layout'

// export default (routers, data) => {
//   // 这里之所以要重新遍历一下，是因为，通常我们动态路由的时候，是获取服务端数据，
//   // 这个component属性是一个字符串，或者可能连字段名都是其他的key
//   // 所以这里要做一些转换
//   generaMenu(routers, data)
// }

// /**
//  * 生成菜单
//  * @param routers 路由规则
//  * @param {Object} data 数据
//  */
// function generaMenu (routers, data) {
//   if (data && data.length > 0) {
//     data.forEach((item) => {
//       let menu = Object.assign({}, item)
//       menu.component = lazyLoading(menu.component)
//       if (!item.leaf) {
//         menu.children = []
//         generaMenu(menu.children, item.children)
//       }
//       routers.push(menu)
//     })

//     // console.log('routes:' + JSON.stringify(routers))
//   }
// }
